#include <iostream>
using namespace std;

// 静态成员变量
class Person
{
public:
    //1、所有对象都共享同一份数据
    //2、编译阶段就分配了内存
    //3、类内声明，类外初始化操作
    static int money;

    //静态成员变量也是有访问权限的
private:
    static int age;
};
int Person::money = 100; // 类外初始化，不再写static关键字
int Person::age = 20;

void test1()
{
    Person p;
    cout << p.money << endl;

    Person p2;
    p2.money = 200;
    cout << p.money << endl;
}

void test2()
{
    // 静态成员变量 不属于某个对象，所有对象都共享同一份数据
    
    //因此，静态成员变量有两种访问方式
    //1、通过对象进行访问
    Person p;
    cout << p.money << endl;
    
    //2、通过类名进行访问
    cout << Person::money << endl;

    //error:  cout << Person::age << endl;  //已私有化
}

int main()
{
    test1();
    cout << "---------------" << endl;
    test2();
    
    return 0;
}